package com.example.controller;

import com.example.entity.Activity;
import com.example.entity.ActivityReview;
import com.example.service.ActivityReviewService;
import com.example.service.ActivityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;

/**
 * 活动审核控制器
 * 处理活动审核相关的所有HTTP请求
 * 基础路径：/activityreview
 */
@Controller
@RequestMapping("activityreview")
public class ActivityReviewController {

    @Autowired
    private ActivityReviewService reviewService;  // 注入活动审核服务

    @Autowired
    private ActivityService activityService;     // 注入活动服务

    /**
     * 获取所有审核记录列表
     * @param model Spring MVC模型对象，用于向视图传递数据
     * @return 返回审核列表视图
     */
    @GetMapping
    public String listReviews(Model model) {
        // 获取所有审核记录
        List<ActivityReview> reviews = reviewService.getAllReviews();
        // 将审核列表添加到模型
        model.addAttribute("reviews", reviews);
        // 返回Thymeleaf模板路径
        return "activityreview/alist";
    }

    /**
     * 查看活动详情及对应的审核记录
     * @param activityId 活动ID
     * @param model Spring MVC模型对象
     * @return 返回活动详情视图
     */
    @GetMapping("/detail/{activityId}")
    public String activityDetail(@PathVariable Integer activityId, Model model) {
        // 根据ID获取活动详情
        Activity activity = activityService.getActivityById(activityId);
        // 获取该活动的所有审核记录
        List<ActivityReview> activityReviews = reviewService.getReviewsByActivity(activityId);
        // 将活动信息和审核记录添加到模型
        model.addAttribute("activity", activity);
        model.addAttribute("activityReviews", activityReviews);
        // 返回Thymeleaf模板路径
        return "activityreview/detail";
    }

    /**
     * 显示编辑审核表单
     * @param id 审核记录ID
     * @param model Spring MVC模型对象
     * @return 返回审核编辑表单视图
     */
    @GetMapping("/edit/{id}")
    public String showEditForm(@PathVariable Integer id, Model model) {
        // 根据ID获取审核记录
        ActivityReview review = reviewService.getReviewById(id);
        // 将审核记录添加到模型
        model.addAttribute("review", review);
        // 返回Thymeleaf模板路径
        return "activityreview/edit";
    }

    /**
     * 更新审核记录
     * @param review 表单提交的审核数据
     * @return 重定向到审核列表页
     */
    @PostMapping("/edit")
    public String updateReview(@ModelAttribute ActivityReview review) {
        // 设置审核时间为当前时间
        review.setReviewTime(new Date());
        // 更新审核记录
        reviewService.updateReview(review);
        // 重定向到审核列表页
        return "redirect:/activityreview";
    }

    /**
     * 删除审核记录
     * @param id 审核记录ID
     * @return 重定向到审核列表页
     */
    @GetMapping("/delete/{id}")
    public String deleteReview(@PathVariable Integer id) {
        // 删除指定ID的审核记录
        reviewService.deleteReview(id);
        // 重定向到审核列表页
        return "redirect:/volunteer/activityreview";
    }
}